﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO; 
using System.Text;
using System.Windows.Forms;
using ComponentFactory.Krypton.Toolkit;
using csharp.rad.general;

namespace csharp.rad.GOVhotel
{
    public partial class GOVhotel : KryptonForm
    {
        Database MyBird = new Database();
        public WinApp MyApp = new WinApp();
        Database.Result birdResult;
        DateTime dataIni, dataFim, datada;
        Saldo regSaldo;
        FileInfo bkpArqvo;

        public GOVhotel()
        {
            InitializeComponent();
        }

        private void fecharToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close(); 
        }

        private void menuPosição_Click(object sender, EventArgs e)
        {
            Situação frmPosiç = new Situação(MyApp.ApplicationDatabase);
            frmPosiç.ShowDialog(this);
        }

        private void menuHistoPorApto_Click(object sender, EventArgs e)
        {
            História.Ação = "porApto";
            História frmHisto = new História(MyApp.ApplicationDatabase);
            frmHisto.ShowDialog(this);  
        }

        private void menuHistoPorBloco_Click(object sender, EventArgs e)
        {
            HistoMensal.Ação = "porBloco";
            HistoMensal frmHisto = new HistoMensal(MyApp.ApplicationDatabase);
            frmHisto.ShowDialog(this);
        }

        private void menuHistoPorCama_Click(object sender, EventArgs e)
        {
            História.Ação = "porCama";
            História frmHisto = new História(MyApp.ApplicationDatabase);
            frmHisto.ShowDialog(this);
        }

        private void menuHistoPendentes_Click(object sender, EventArgs e)
        {
            História.Ação = "Pendentes";
            História frmHisto = new História(MyApp.ApplicationDatabase);
            frmHisto.ShowDialog(this);
        }

        private void menuEstoqEntra_Click(object sender, EventArgs e)
        {
            Estoque.acao = "Entra";
            Estoque frmEstoq = new Estoque(MyApp.ApplicationDatabase);
            frmEstoq.ShowDialog(this); 
        }

        private void menuEstoqSaída_Click(object sender, EventArgs e)
        {
            Estoque.acao = "Saída";
            Estoque frmEstoq = new Estoque(MyApp.ApplicationDatabase);
            frmEstoq.ShowDialog(this);
        }

        private void menuEstoqAlter_Click(object sender, EventArgs e)
        {
            CadProds.Ação = "Alter";
            CadProds frmEstoq = new CadProds(MyApp.ApplicationDatabase);
            frmEstoq.ShowDialog(this); 
        }

        private void menuEstoqBaixa_Click(object sender, EventArgs e)
        {
            Estoque.acao = "Baixa";
            Estoque frmEstoq = new Estoque(MyApp.ApplicationDatabase);
            frmEstoq.ShowDialog(this);
        }

        private void menuEstoqExcluir_Click(object sender, EventArgs e)
        {
            CadProds.Ação = "Excluir";
            CadProds frmEstoq = new CadProds(MyApp.ApplicationDatabase);
            frmEstoq.ShowDialog(this);
        }

        private void menuEstoqDevolve_Click(object sender, EventArgs e)
        {
            Estoque.acao = "Devolve";
            Estoque frmEstoq = new Estoque(MyApp.ApplicationDatabase);
            frmEstoq.ShowDialog(this);
        }

        private void menuEstoqFechto_Click(object sender, EventArgs e)
        {
            datada = DateTime.Today.AddMonths(-1);
            Saldo regSaldo = new Saldo(MyApp.ApplicationDatabase);
            regSaldo.Data = Convert.ToDateTime(DateTime.Today.ToString("01/MM/yyyy"));    
            int dbRet = regSaldo.JáFechou();
            if (dbRet > 1)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: GOVhotelFechto" + "\n" + regSaldo.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            if (dbRet == 1)
            {
                MessageBox.Show("O mês de " + datada.ToString("MMMM/yyyy") + "\njá está FECHADO!");
                return;
            }
            datada = regSaldo.Data;
            DialogResult resp = MessageBox.Show("O fechamento do mês de " + datada.ToString("MMMM/yyyy")
                + "\nimpedirá lançamentos ou correções no estoque\nreferentes a tal mês.\n\n"
                + "Você confirma o fechamento\ndo mês de " + datada.ToString("MMMM/yyyy") + " ?",
                "   Fechamento do Mês", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
            if (resp == DialogResult.No) return;
            rot_Fechto_Mês();
        }

        private void rot_Fechto_Mês()
        {
            dataIni = datada;
            dataFim = dataIni.AddMonths(1);
            Produtos rolProd = new Produtos(MyApp.ApplicationDatabase);
            int dbRet = rolProd.Lista();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: GOVhotelFechtoMês" + "\n" + rolProd.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            MyApp.ApplicationDatabase.BeginTransaction(IsolationLevel.ReadCommitted);   
            for (int xx = 0; xx < rolProd.Items.Count; xx++)
            {
                regSaldo = new Saldo(MyApp.ApplicationDatabase);
                regSaldo.Data = dataIni;
                regSaldo.CódProduto = rolProd.Items[xx].Código; 
                dbRet = regSaldo.Obter();
                if (dbRet > 1)
                {
                    MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                        + "referência: GOVhotelFechtoMêsSaldo" + "\n" + regSaldo.MsgErro,
                        "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    MyApp.ApplicationDatabase.RollBackTransaction();
                    return;
                }
                if (dbRet == 1)
                {
                    regSaldo.Quantidade = 0;
                    regSaldo.Preço = 0;
                }
                regSaldo.Preço = regSaldo.Preço * 100; 
                int rotRet = rot_Fechto_Entra();
                if (rotRet != 0)
                {
                    MyApp.ApplicationDatabase.RollBackTransaction();
                    return;
                }
                rotRet = rot_Fechto_Retirada();
                if (rotRet != 0)
                {
                    MyApp.ApplicationDatabase.RollBackTransaction();
                    return;
                }
                rotRet = rot_Fechto_Volta();
                if (rotRet != 0)
                {
                    MyApp.ApplicationDatabase.RollBackTransaction();
                    return;
                }
                rotRet = rot_Fechto_Baixa();
                if (rotRet != 0)
                {
                    MyApp.ApplicationDatabase.RollBackTransaction();
                    return;
                }
                regSaldo.Data = dataFim;
                regSaldo.Preço = regSaldo.Preço / 100;
                dbRet = regSaldo.Insert();
                if (dbRet != 0)
                {
                    MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                        + "referência: GOVhotelFechtoNovoSaldo" + "\n" + regSaldo.MsgErro,
                        "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    MyApp.ApplicationDatabase.RollBackTransaction();
                    return;
                }
            }
            MyApp.ApplicationDatabase.CommitTransaction();
            MessageBox.Show("foi fechado o saldo\ndo mês de " + dataIni.ToString("MMMM/yyyy"), "   OK");
        }

        private int rot_Fechto_Entra()
        {
            Entradas rolEntra = new Entradas(MyApp.ApplicationDatabase);
            rolEntra.DataIni = dataIni;
            rolEntra.DataFim = dataFim;
            rolEntra.Produto = regSaldo.CódProduto;  
            int dbRet = rolEntra.ListaMês();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: GOVhotelFechtoEntra" + "\n" + rolEntra.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return dbRet;
            }
            for (int xx = 0; xx < rolEntra.Items.Count; xx++)
            {
                regSaldo.Quantidade = (regSaldo.Quantidade + rolEntra.Items[xx].Quantidade);
                regSaldo.Preço = rolEntra.Items[xx].Preço;
            }
            return 0;
        }

        private int rot_Fechto_Retirada()
        {
            Retiradas rolRetirada = new Retiradas(MyApp.ApplicationDatabase);
            rolRetirada.DataIni = dataIni;
            rolRetirada.DataFim = dataFim;
            rolRetirada.Produto = regSaldo.CódProduto;
            int dbRet = rolRetirada.ListaMês();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: GOVhotelFechtoRetirada" + "\n" + rolRetirada.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return dbRet;
            }
            for (int xx = 0; xx < rolRetirada.Items.Count; xx++)
            {
                regSaldo.Quantidade = (regSaldo.Quantidade - rolRetirada.Items[xx].Quantidade);
            }
            return 0;
        }

        private int rot_Fechto_Volta()
        {
            Devoluções rolVolta = new Devoluções(MyApp.ApplicationDatabase);
            rolVolta.DataIni = dataIni;
            rolVolta.DataFim = dataFim;
            rolVolta.Produto = regSaldo.CódProduto;
            int dbRet = rolVolta.ListaMês();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: GOVhotelFechtoVolta" + "\n" + rolVolta.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return dbRet;
            }
            for (int xx = 0; xx < rolVolta.Items.Count; xx++)
            {
                regSaldo.Quantidade = (regSaldo.Quantidade + rolVolta.Items[xx].Quantidade);
            }
            return 0;
        }

        private int rot_Fechto_Baixa()
        {
            Baixas rolBaixa = new Baixas(MyApp.ApplicationDatabase);
            rolBaixa.DataIni = dataIni;
            rolBaixa.DataFim = dataFim;
            rolBaixa.Produto = regSaldo.CódProduto;
            int dbRet = rolBaixa.ListaMês();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: GOVhotelFechtoBaixa" + "\n" + rolBaixa.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return dbRet;
            }
            for (int xx = 0; xx < rolBaixa.Items.Count; xx++)
            {
                regSaldo.Quantidade = (regSaldo.Quantidade - rolBaixa.Items[xx].Quantidade);
            }
            return 0;
        }

        private void Form_Load(object sender, EventArgs e)
        {
            if (!MyApp.Initialize(System.Reflection.Assembly.GetExecutingAssembly()))
            {
                MessageBox.Show("Banco de Dados não está conectado");
                Close();
                return;
            }
            this.WindowState = FormWindowState.Maximized;
            //Mostra o nome de usuário na barra de status
            tslStatus2.Text = MyApp.ApplicationUser.Name;
            
            if (MyApp.ApplicationUser.CheckPermission("SISTEMA.SEGURANÇA", false))
            {
                menuSenhas.Visible = true;
                menuSenhas.Enabled = true; 
            }
            cadGeral regGeral = new cadGeral(MyApp.ApplicationDatabase);
            regGeral.Tipo = "Y";
            regGeral.Código = 0;
            int dbRet = regGeral.Obter();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: GOVhotelLoadBKP" + "\n" + regGeral.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            DateTime lastBkp = Convert.ToDateTime(regGeral.Descrição.Trim());
            if (lastBkp >= DateTime.Today.AddDays(-3)) return;
            DirectoryInfo dir = new DirectoryInfo(@"C:\RamaSoft\BackUp");
            if (!dir.Exists)
            {
                MessageBox.Show("Recomendamos acessar o programa\nGOVhotel no micro da Governança,\n"
                + "para efetuar o Back-Up dos Bancos de Dados", "   Último BackUp é anterior a 3 dias",
                MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            txBackUp.Text = "*** Favor Aguardar ***\n\nBackUp em Andamento\n\nO último é anterior a 3 dias.";
            txBackUp.Visible = true;
            txBackUp.Refresh();
            Start.Enabled = true;
        }

        private void menuCamaCadastro_Click(object sender, EventArgs e)
        {
            Cadastro frmCada = new Cadastro(MyApp.ApplicationDatabase);
            frmCada.ShowDialog(this);
        }

        private void menuSenhas_Click(object sender, EventArgs e)
        {
            MyApp.SecurityManager();
        }

        private void menuConsMensal_Click(object sender, EventArgs e)
        {
            PosEstoq.Ação = "LçtoMês"; 
            PosEstoq frmPosiç = new PosEstoq(MyApp.ApplicationDatabase);
            frmPosiç.ShowDialog(this);
        }

        private void menuConsDiário_Click(object sender, EventArgs e)
        {
            PosEstoq.Ação = "Diária";
            PosEstoq frmPosiç = new PosEstoq(MyApp.ApplicationDatabase);
            frmPosiç.ShowDialog(this);
        }

        private void menuConsPorDia_Click(object sender, EventArgs e)
        {
            PosEstoq.Ação = "PorDia";
            PosEstoq frmPosiç = new PosEstoq(MyApp.ApplicationDatabase);
            frmPosiç.ShowDialog(this);
        }

        private void menuConsPorMês_Click(object sender, EventArgs e)
        {
            PosEstoq.Ação = "PorMês";
            PosEstoq frmPosiç = new PosEstoq(MyApp.ApplicationDatabase);
            frmPosiç.ShowDialog(this);
        }

        private void menuCompCama_Click(object sender, EventArgs e)
        {
            Compara.Ação = "Cameira";
            Compara frmCompa = new Compara(MyApp.ApplicationDatabase);
            frmCompa.ShowDialog(this);
        }

        private void menuCompCamaAcum_Click(object sender, EventArgs e)
        {
            Compara.Ação = "Acumo";
            Compara frmCompa = new Compara(MyApp.ApplicationDatabase);
            frmCompa.ShowDialog(this);
        }

        private void MenuCompBlocoCame_Click(object sender, EventArgs e)
        {
            Compara.Ação = "Bloco";
            Compara frmCompa = new Compara(MyApp.ApplicationDatabase);
            frmCompa.ShowDialog(this);
        }

        private void MenuCompBlocoProds_Click(object sender, EventArgs e)
        {
            RelBlocoMes frmRelat = new RelBlocoMes(MyApp.ApplicationDatabase);
            frmRelat.ShowDialog(this);
        }

        private void menuCompApto_Click(object sender, EventArgs e)
        {
            Compara.Ação = "Apto";
            Compara frmCompa = new Compara(MyApp.ApplicationDatabase);
            frmCompa.ShowDialog(this);
        }

        private void menuEscaViso_Click(object sender, EventArgs e)
        {
            Scala.Ação = "Viso";
            Scala frmScala = new Scala(MyApp.ApplicationDatabase);
            frmScala.ShowDialog(this);
        }

        private void menuEscaLanço_Click(object sender, EventArgs e)
        {
            //ScalaLçto frmScala = new ScalaLçto(MyApp.ApplicationDatabase);
            //frmScala.ShowDialog(this);
        }

        private void menuEscaBase_Click(object sender, EventArgs e)
        {
            ScalaBase frmScala = new ScalaBase(MyApp.ApplicationDatabase);
            frmScala.ShowDialog(this);
        }

        private void menuEscaCancel_Click(object sender, EventArgs e)
        {
            Scala.Ação = "Cancel";
            Scala frmScala = new Scala(MyApp.ApplicationDatabase);
            frmScala.ShowDialog(this);
        }

        private void menuBackUp_Click(object sender, EventArgs e)
        {
            DirectoryInfo dir = new DirectoryInfo(@"C:\RamaSoft\BackUp");
            if (!dir.Exists)
            {
                Console.Beep(800, 600);
                return;
            }
            txBackUp.Text = "*** Favor Aguardar ***\n\nBackUp em Andamento";
            txBackUp.Visible = true;
            txBackUp.Refresh();
            Start.Enabled = true;
        }

        private void rot_BackUp()
        {
            cadsGerais rolGeral = new cadsGerais(MyApp.ApplicationDatabase);
            rolGeral.Tipo = "Y";
            int dbRet = rolGeral.Lista();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: GOVhotelBackUpGeral" + "\n" + rolGeral.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            string bkpPgLoc = rolGeral.Items[1].Descrição.Trim();
            string bkpHostN = rolGeral.Items[2].Descrição.Trim();
            string bkpDisco = rolGeral.Items[3].Descrição.Trim();
            string bkpPgSQL = "pg_dump.exe -i -h " + bkpHostN + " -p 5432 -U postgres -F c -b -v -f ";
            string bkpFName = @"\Parq";
            string bkpLocal = @"""" + bkpDisco + bkpFName + DateTime.Today.ToString("yyMMdd") + @".BKP"" ";
            string bkpParam = @"""" + bkpPgLoc + @"""" + bkpPgSQL + bkpLocal + "Parque_db";
            bkpFName = @"\Patr";
            bkpLocal = @"""" + bkpDisco + bkpFName + DateTime.Today.ToString("yyMMdd") + @".BKP"" ";
            string bkpParm2 = @"""" + bkpPgLoc + @"""" + bkpPgSQL + bkpLocal + "Patrimonio_db";
            bkpFName = @"\Stat";
            bkpLocal = @"""" + bkpDisco + bkpFName + DateTime.Today.ToString("yyMMdd") + @".BKP"" ";
            string bkpParm3 = @"""" + bkpPgLoc + @"""" + bkpPgSQL + bkpLocal + "Status_db";
            bkpArqvo = new FileInfo(@"C:\RamaSoft\BackPostG.bat");
            
            if (bkpArqvo.Exists) 
               bkpArqvo.Delete();
            StreamWriter arqPut = File.CreateText(bkpArqvo.FullName);
            arqPut.Write(bkpParam);
            arqPut.Close();
            
            int rotRet = rot_BackUp_EXEC();
            if (rotRet != 0) 
               return;
            bkpArqvo.Delete();
            arqPut = File.CreateText(bkpArqvo.FullName);
            arqPut.Write(bkpParm2);
            arqPut.Close();
            rotRet = rot_BackUp_EXEC();
            if (rotRet != 0) return;
               bkpArqvo.Delete();
               
            arqPut = File.CreateText(bkpArqvo.FullName);
            arqPut.Write(bkpParm3);
            arqPut.Close();
            rotRet = rot_BackUp_EXEC();
            if (rotRet != 0) return;
            DateTime lastWeek = DateTime.Today.AddDays(-7);
            DirectoryInfo dir = new DirectoryInfo(@"C:\RamaSoft\BackUp");
            FileSystemInfo[] lstArqs = dir.GetFileSystemInfos("*.BKP");
            foreach (FileSystemInfo arqvo in lstArqs)
            {
                string arqNome = arqvo.Name;
                DateTime arqData = Convert.ToDateTime(arqNome.Substring(8, 2) + "/"
                    + arqNome.Substring(6, 2) + "/" + arqNome.Substring(4, 2));
                if (arqData < lastWeek) arqvo.Delete();
            }
            cadGeral regGeral = new cadGeral(MyApp.ApplicationDatabase);
            regGeral.Tipo = "Y";
            regGeral.Código = 0;
            regGeral.Descrição = DateTime.Today.ToString("dd/MM/yyyy");
            dbRet = regGeral.Update();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: GOVhotelUpdtBKP" + "\n" + regGeral.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            MessageBox.Show("CONCLUÍDO", "BACKUP");
            txBackUp.Visible = false;
        }

        private int rot_BackUp_EXEC()
        {
            System.Diagnostics.Process pgm = new System.Diagnostics.Process();
            pgm.StartInfo.FileName = bkpArqvo.FullName;
            try
            {
                pgm.Start();
                pgm.WaitForExit();
            }
            catch (Win32Exception errCode)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: GOVhotelBackUpExec" + "\n" + errCode.NativeErrorCode.ToString(),
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return 7;
            }
            return 0;
        }
        private void Start_Tick(object sender, EventArgs e)
        {
            Start.Enabled = false;
            rot_BackUp();
        }

        private void menuOcupa_Click(object sender, EventArgs e)
        {
            if (MyApp.ApplicationUser.Name != "DITO") return;
            janOcupa.Visible = true;
        }

        private Boolean setupMyBird()
        {
            Settings birdSettings;
            birdSettings = new Settings(System.IO.Path.GetDirectoryName
                                           (Application.ExecutablePath.ToString())
                                           + "\\birdDatabaseSettings.xml");

            //Set Evolynx database configuration
            String info = "Forneça os dados para a conexão com o banco de dados do FireBird";
            if (!birdSettings.SetConfig(info))
            {
                return false;
            }
            birdSettings.GetConfig();
            MyBird.Protocol = birdSettings.DatabaseProtocol;
            MyBird.Host = birdSettings.DatabaseHost;
            //MyBird.Host = txIPAddress.Text + txDBase.Text; 
            MyBird.Name = birdSettings.DatabaseName;
            //MyBird.Name = txDBase.Text; 
            MyBird.User = birdSettings.DatabaseUser;
            MyBird.Password = birdSettings.DatabasePassword;
            birdResult = new Database.Result();
            birdResult = MyBird.Connect();
            return MyBird.IsConnected;
        }

        private void datador_ValueChanged(object sender, EventArgs e)
        {
            listaOcup.Visible = true;
            listaOcup.Items.Clear();
            Ocupações rolOcupa = new Ocupações(MyBird);
            rolOcupa.Data = datador.Value;
            int dbRet = rolOcupa.ListaDia();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: GOVhotelOcupa" + "\n" + rolOcupa.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            for (int yy = 0; yy < rolOcupa.Items.Count; yy++)
            { 
                listaOcup.Items.Add(rolOcupa.Items[yy].Apto + " " + rolOcupa.Items[yy].Entrada.ToString("dd/MM/yyyy")
                    + " " + rolOcupa.Items[yy].Saída.ToString("dd/MM/yyyy") + " " + rolOcupa.Items[yy].QtAdulto.ToString()
                    + " " + rolOcupa.Items[yy].QtMenor.ToString() ); 
            }
            if (rolOcupa.Items.Count == 0) listaOcup.Items.Add("*** não há registro para a data solicitada");
        }

        private void cmdBirdOK_Click(object sender, EventArgs e)
        {
            MyBird.Disconnect();
            listaOcup.Visible = false;
            janOcupa.Visible = false;
        }

        private void menuEscaFolgaFixa_Click(object sender, EventArgs e)
        {
            janFolga.Visible = true;
            cadGeral regGeral = new cadGeral(MyApp.ApplicationDatabase);
            regGeral.Tipo = "S";
            regGeral.Código = 0;
            int dbRet = regGeral.Obter();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: GOVhotelFolgaObter" + "\n" + regGeral.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            string auxDescr = regGeral.Descrição;
            DateTime auxData = Convert.ToDateTime(auxDescr.Substring(0, 10));
            titAtualIni.Text = auxData.ToString("ddd dd MMM/yyyy");
            auxData = Convert.ToDateTime(auxDescr.Substring(10, 10));
            titAtualFim.Text = auxData.ToString("ddd dd MMM/yyyy");
            datadorIni.Value = DateTime.Today;
            datadorFim.Value = DateTime.Today;
        }

        private void cmdVoltar_Click(object sender, EventArgs e)
        {
            janFolga.Visible = false;
        }

        private void cmdFolgaOK_Click(object sender, EventArgs e)
        {
            string auxDataI = datadorIni.Value.ToString("dd/MM/yyyy");
            string auxDataF = datadorFim.Value.ToString("dd/MM/yyyy");
            cadGeral regGeral = new cadGeral(MyApp.ApplicationDatabase);
            regGeral.Tipo = "S";
            regGeral.Código = 0;
            regGeral.Descrição = auxDataI + auxDataF;
            int dbRet = regGeral.Update();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: GOVhotelFolgaAtual" + "\n" + regGeral.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            infoOK.Visible = true;
            Pulso.Enabled = true;
        }

        private void Pulso_Tick(object sender, EventArgs e)
        {
            Pulso.Enabled = false;
            infoOK.Visible = false;
            janFolga.Visible = false;
        }

        private void dataFolga_ValueChanged(object sender, EventArgs e)
        {
            if (datadorIni.Value < datadorFim.Value) cmdFolgaOK.Visible = true;
            else cmdFolgaOK.Visible = false;
        }

        private void menuAparto_Click(object sender, EventArgs e)
        {
            Aparto frmApto = new Aparto(MyApp.ApplicationDatabase);
            frmApto.ShowDialog(this);
        }

        private void menuLançaBlindex_Click(object sender, EventArgs e)
        {
            LançBlindex frmLançto = new LançBlindex(MyApp.ApplicationDatabase);
            frmLançto.ShowDialog(this);
        }

        private void menuLançaCameira_Click(object sender, EventArgs e)
        {
            Lançto frmLançto = new Lançto(MyApp.ApplicationDatabase);
            frmLançto.ShowDialog(this); 
        }

        private void menuLançaDuplas_Click(object sender, EventArgs e)
        {
            Pares frmPares = new Pares(MyApp.ApplicationDatabase);
            frmPares.ShowDialog(this);
        }

        private void menuCompRetira_Click(object sender, EventArgs e)
        {
            CompaRet.Ação = "Cames";
            CompaRet frmCompa = new CompaRet(MyApp.ApplicationDatabase);
            frmCompa.ShowDialog(this);
        }

        private void menuObjetos_Click(object sender, EventArgs e)
        {
            Artigos frmArtigo = new Artigos(MyApp.ApplicationDatabase);
            frmArtigo.ShowDialog(this);
        }

        private void numerador_ValueChanged(object sender, EventArgs e)
        {
            listaOcup.Visible = true;
            listaOcup.Items.Clear();
            Ocupação regOcup = new Ocupação(MyBird);
            regOcup.Número = (int)numerador.Value;
            int dbRet = regOcup.Obter();
            if (dbRet > 1)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: GOVhotelOcupa" + "\n" + regOcup.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            if (dbRet == 1) listaOcup.Items.Add("*** Não há registro para a referência solicitada ***");
            else listaOcup.Items.Add("Nº " + numerador.Value.ToString() + " "
               + regOcup.Apto + " " + regOcup.Entrada.ToString("dd/MM/yyyy")
               + " " + regOcup.Saída.ToString("dd/MM/yyyy") + " " + regOcup.QtAdulto.ToString()
               + " " + regOcup.QtMenor.ToString());
        }

        private void cmdLink_Click(object sender, EventArgs e)
        {
            cmdLink.Text = "*** FAVOR AGUARDAR ***";
            cmdLink.BackColor = Color.Aqua;
            cmdLink.Refresh(); 
            setupMyBird();
            if (birdResult.Status == Database.Status.Failed)
            {
                MessageBox.Show(birdResult.ErrorMessage, "Not Connected");
                return;
            }
            cmdLink.Visible = false;
            janSeleção.Visible = true;
            cmdBirdOK.Visible = true; 
        }

        private void menuLançaRelBlindex_Click(object sender, EventArgs e)
        {
            RelDiário.Ação = "Blindex";
            RelDiário frmRelat = new RelDiário(MyApp.ApplicationDatabase);
            frmRelat.ShowDialog(this);
        }

        private void menuLançaRelCame_Click(object sender, EventArgs e)
        {
            RelDiário.Ação = "Lançto";
            RelDiário frmRelat = new RelDiário(MyApp.ApplicationDatabase);
            frmRelat.ShowDialog(this);
        }

        private void menuProduto_4_Click(object sender, EventArgs e)
        {
            if (MyApp.ApplicationUser.Name != "DITO") return;
            Reposição regRepo = new Reposição(MyApp.ApplicationDatabase);
            int dbRet = regRepo.MaiorNumo();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: GOVhotelProd4Maior" + "\n" + regRepo.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            int final = regRepo.Número + 1;
            for (int nm = 1; nm < final; nm++)
            {
                regRepo.Número = nm;
                dbRet = regRepo.Existe();
                if (dbRet > 1)
                {
                    MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                        + "referência: GOVhotelProd4Ver" + "\n" + regRepo.MsgErro,
                        "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                if (dbRet != 0)
                {
                    regRepo.CódProduto = 4;
                    regRepo.Quantidade = 0;
                    dbRet = regRepo.Insert();
                    if (dbRet != 0)
                    {
                        MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                            + "referência: GOVhotelProd4Novo" + "\n" + regRepo.MsgErro,
                            "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                }
            }
            MessageBox.Show("DONE");
        }

        private void menuEscaBancoDados_Click(object sender, EventArgs e)
        {
            if (MyApp.ApplicationUser.Name != "DITO") return;
            DateTime época = Convert.ToDateTime("22/09/2008");
            while (true)
            {
                DialogResult resp = MessageBox.Show("Marcar Escala Atual com início em: " + época.ToString("dd/MMMM/yyyy"),
                    "Escala", MessageBoxButtons.YesNoCancel);
                if (resp == DialogResult.Yes) break;
                if (resp == DialogResult.Cancel) return;
                época = época.AddDays(-7);
            }
            Escala regEscala = new Escala(MyApp.ApplicationDatabase);
            int dbRet = regEscala.Última();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                    + "referência: GOVhotelEscaÚltima" + "\n" + regEscala.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            int ultSeque = regEscala.Seque;
            for (int ix = ultSeque; ix >= 1; ix--)
            {
                regEscala.Seque = ix;
                regEscala.Época = época;
                dbRet = regEscala.Set_Época();
                if (dbRet != 0)
                {
                    MessageBox.Show("Favor avisar a RamaSoft" + "\n"
                        + "referência: GOVhotelEscaÉpoca" + "\n" + regEscala.MsgErro,
                        "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                época = época.AddDays(-7);
            }
            MessageBox.Show("* CONCLUÍDO *"); 
        }
        
        void SairToolStripMenuItemClick(object sender, EventArgs e)
        {
        		this.Close();
        }
        
        void MédiasToolStripMenuItemClick(object sender, EventArgs e)
        {
        		relMediaConsumo form = new relMediaConsumo(MyApp.ApplicationDatabase);
        		form.ShowDialog();
        }
        
        void MédiaComprasToolStripMenuItemClick(object sender, EventArgs e)
        {
        		relMediaCompras form = new relMediaCompras(MyApp.ApplicationDatabase);
        		form.ShowDialog();
        }
        
        void GastosMêsToolStripMenuItemClick(object sender, EventArgs e)
        {
        		relGastosMes form = new relGastosMes(MyApp.ApplicationDatabase);
        		form.ShowDialog();
        }
        
        

        
        void TsmiLancamentosClick(object sender, EventArgs e)
        {
        	relLancamentos form = new relLancamentos(MyApp.ApplicationDatabase);
        	try
        	{
        		form.ShowDialog();
        	}
        	finally
        	{
        		form.Dispose();
        	}
        }
    }
}
